﻿using System;
using Enterprise.Model.IRepositories;
using Enterprise.Model.Entities;
using Enterprise.Infrastructure.RepositoryFramework;
using System.Data.SqlClient;

namespace Enterprise.Infrastructure.Repositories
{
    public class RepositorioDePassaporte : IRepositorioDePassaporte
    {

        public readonly Repositorio _repositorio;

        public RepositorioDePassaporte(IRepositorio repositorio) 
        {
            _repositorio = (Repositorio)repositorio;
        
        }

        public Passaporte Obter(Guid id)
        {
            //EXEMPLO
            var passaporte = _repositorio.Obter<Passaporte>(
                "exec mobile.ObterPassaporte @IdPassaporte", new SqlParameter("IdPassaporte", id));

           // if (passaporte.IsNull())
              //  return null;
           // passaporte.Usuario = new Usuario { Login = passaporte.UsuarioLogin };

           // passaporte.Aplicacao = new Dominio.Autenticacao.Entidade.Aplicacao { Nome = passaporte.AplicacaoNome };

           // passaporte.Atores = _unidadeDeTrabalho.Listar<Ator>(
                                  //  "exec mobile.ObterAtoresdoUsuario @Login", new SqlParameter("Login", passaporte.UsuarioLogin)).ToList();

            return passaporte;
        }

        public void Atualizar(Passaporte passaporte)
        {

            //EXEMPLO
            _repositorio.Executar(
               "exec mobile.AtualizarPassaporte @Id, @AplicacaoNome, @UsuarioLogin, @DataCriacao, @DataValidade, @Expirado",
                   new SqlParameter("Id", passaporte.Id),
                   new SqlParameter("AplicacaoNome", passaporte.AplicacaoNome),
                   new SqlParameter("UsuarioLogin", passaporte.UsuarioLogin),
                   new SqlParameter("DataCriacao", passaporte.CriadoEm),
                   new SqlParameter("DataValidade", passaporte.ValidadoAte));
        }

        public void Adicionar(Passaporte passaporte)
        {
            //EXEMPLO
            _repositorio.Executar(
               "exec mobile.IncluirPassaporte @Id, @AplicacaoNome, @UsuarioLogin, @DataCriacao, @DataValidade, @Expirado",
               new SqlParameter("Id", passaporte.Id),
               new SqlParameter("AplicacaoNome", passaporte.AplicacaoNome),
               new SqlParameter("UsuarioLogin", passaporte.UsuarioLogin),
               new SqlParameter("DataCriacao", passaporte.CriadoEm),
               new SqlParameter("DataValidade", passaporte.ValidadoAte)
               ); 
        }
    }
}
